# extract database names from oratab
cat /etc/oratab|grep -v "^#"|grep -v "N$"|cut -f1 -d: -s

# running SID
ps -ef | grep smon | grep -v grep | grep -v sed | awk '{print $NF}' | sed -n 's/ora_smon_\(.*\)/\1/p'

# check if substring exists in string
string='My long string'
if [[ $string == *"My long"* ]]; then
  echo "It's there!"
fi


# To save both stdout and stderr to a variable:
# Note that this interleaves stdout and stderr into the same variable.
MYVARIABLE="$(path/myExcecutable-bin 2>&1)"

# To save just stderr to a variable:
MYVARIABLE="$(path/myExcecutable-bin 2>&1 > /dev/null)"

# XARGS usage
cat /etc/oratab|  grep 12.1.0.2 | grep -v "^#"|grep -v "N$"|cut -f1 -d: -s | xargs -I{} echo myshell.sh -d {}

# test if a variable is in a set
if [[ "$WORD" =~ ^(cat|dog|horse)$ ]]; then
    echo "$WORD is in the list"
else
    echo "$WORD is not in the list"
fi

# Remove substring from string
echo "Hello world" | sed "s/world//g"

# Replace text in file in place
sed -i 's/myoldstring/thenewstring/g' move_34.sh

# Example with xargs and awk
cat out.txt | grep -v SUCCESSFULLY | awk -F ":" '{ print $1}' | sort -u | xargs -I{} echo "/dbfs_tools/TOOLS/admin/sh/db_pre_change_oh.sh -d {} -a fixall"

# Find the line number of the first occurance of a string in a file
awk '/YODAEXA_DGMGRL/{ print NR; exit }' /tmp/listener.ora

# How to replace an entire line in a text file by line number
# where N should be replaced by your target line number. 
sed -i 'Ns/.*/replacement-line/' file.txt

# Uppercasing Text with sed
sed 's/[a-z]/\U&/g'

# Lowercasing Text with sed
sed 's/[A-Z]/\L&/g'

# Search a text in a file and print the line#
grep -n "Database Status:" /tmp/vpl.txt | awk -F ":" '{print $1}'

# echo without NEWLINE
echo -n $x

# ltrim using sed
cat /tmp/vpl.txt | grep 'Intended State' | awk -F ":" '{print $2}' | sed 's/^ *//g'

# tkprof multiple traces
ls -1 TRACES*.trc | while read FILE ; do  tkprof $FILE $FILE.out; done

# get errors from a datapump log
cat impo_01.log | grep ORA- | awk -F ":" '{ print $1}' | sort -u
